package com.dd.controller;

import com.dd.model.PublicSupervisionData;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.stage.Stage;
/*`PublicDataDetailsController` 是 JavaFX 应用中的一个控制器类，主要用于“公众监督数据详情”页面的数据展示和交互。它的主要功能包括：

1. **数据显示**：  
   通过 `setPublicSupervisionData` 方法，将选中的公众监督数据（如编号、提交日期、具体地址、问题类型、严重程度、状态、指派网格员、问题描述、预估AQI、反馈者姓名/性别/电话等）显示在界面上。

2. **只读详情**：  
   页面上的数据都是只读的，不能编辑（如 `descriptionTextArea.setEditable(false)`），用于详细查看某一条公众监督数据的所有信息。

3. **关闭窗口**：  
   提供 `handleClose()` 方法，允许用户关闭当前详情窗口。

---

**总结**：  
这个类就是“公众监督数据详情页面”的控制器，负责把一条公众监督数据的所有详细信息展示出来，并提供关闭窗口的功能。*/
public class PublicDataDetailsController {

    @FXML
    private Label idLabel;
    @FXML
    private Label submitDateLabel;
    @FXML
    private Label specificAddressLabel;
    @FXML
    private Label problemTypeLabel;
    @FXML
    private Label severityLabel;
    @FXML
    private Label statusLabel;
    @FXML
    private Label assignedWorkerLabel;
    @FXML
    private TextArea descriptionTextArea;
    @FXML
    private Label estimatedAqiLabel;
    @FXML
    private Label feedbackerInfoLabel; // 反馈者信息（姓名+性别）
    @FXML
    private Label phoneLabel; // 联系电话

    private PublicSupervisionData selectedData; // 用于存储当前显示的数据对象

    @FXML
    private void initialize() {
        // 初始化方法，可以在这里进行一些UI元素的设置，例如设置TextArea为不可编辑
        descriptionTextArea.setEditable(false);
    }

    /**
     * 设置要显示详情的公众监督数据。
     * 这个方法会在 MainController 中被调用。
     * @param data 要设置的 PublicSupervisionData 对象
     */
    public void setPublicSupervisionData(PublicSupervisionData data) {
        this.selectedData = data;
        // 将数据显示在界面上
        idLabel.setText(data.getId());
        submitDateLabel.setText(data.getSubmitDate());
        specificAddressLabel.setText(data.getSpecificAddress());
        problemTypeLabel.setText(data.getProblemType());
        severityLabel.setText(data.getSeverity());
        statusLabel.setText(data.getStatus());
        assignedWorkerLabel.setText(data.getAssignedGridWorker());
        descriptionTextArea.setText(data.getProblemDescription());
        estimatedAqiLabel.setText(data.getEstimatedAqi());
        
        // 组合反馈者信息：姓名（性别）
        String feedbackerName = data.getFeedbackerName() != null ? data.getFeedbackerName() : "";
        String feedbackerGender = data.getFeedbackerGender() != null ? data.getFeedbackerGender() : "";
        String feedbackerInfo = feedbackerName;
        if (!feedbackerGender.isEmpty()) {
            feedbackerInfo += "（" + feedbackerGender + "）";
        }
        feedbackerInfoLabel.setText(feedbackerInfo);
        
        // 显示联系电话
        phoneLabel.setText(data.getFeedbackerPhone() != null ? data.getFeedbackerPhone() : "");
    }

    /**
     * 处理关闭按钮点击事件。
     */
    @FXML
    private void handleClose() {
        // 关闭当前窗口
        Stage stage = (Stage) idLabel.getScene().getWindow();
        stage.close();
    }
}
